package fwmpc.store;

import fwmpc.exception.WeiXinRuntimeException;
import fwmpc.resource.IWeiXinAttributeItem;

import java.io.UnsupportedEncodingException;

/**
 * 接口描述:  微信属性存储接口
 *
 * @author 王雷
 * @version 1.0.0
 * @date 2021/1/18 0018 上午 10:59
 */
public interface IWeiXinAttributeStore {

    /**
     * 功能描述：根据枚举获取对应的存储数据
     *
     * @param appId 配置的识别Key
     * @return 对应存储的配置信息
     * @throws RuntimeException 运行时异常
     * @author : 王雷
     * @date : 2021/1/18 0018 上午 11:14
     */
    IWeiXinAttributeItem giveWeiXinCommonAttribute(String appId) throws WeiXinRuntimeException;

    /**
     * 功能描述：获取默认微信处理数据描述对象
     *
     * @return 对应存储的配置信息
     * @throws RuntimeException 运行时异常
     * @author : 王雷
     * @date : 2021/1/18 0018 上午 11:14
     */
    IWeiXinAttributeItem giveWeiXinCommonAttributeDefault() throws WeiXinRuntimeException;

    /**
     * 功能描述：根据指定的支付账号标识获取支付对象信息
     *
     * @param mchId 支付账号标识
     * @return 对应存储的配置信息
     * @throws RuntimeException 运行时异常
     * @author : 王雷
     * @date : 2021/1/18 0018 上午 11:14
     */
    IWeiXinAttributeItem.MchDataBean giveWeiXinPayMchDataBean(String mchId) throws WeiXinRuntimeException;

    /**
     * 功能描述：微信访问地址——换取Token地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:07
     */
    String giveCodeUrl();

    /**
     * 属性描述：微信访问地址——获取OpenID地址
     *
     * @date : 2022/11/26 0026 下午 8:23
     */
    String giveOpenIdUrl();

    /**
     * 功能描述：微信访问地址——换取Token地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:07
     */
    String giveWebTokenUrl();

    /**
     * 属性描述：微信访问地址——推送模版消息
     *
     * @date : 2023/2/1 0001 上午 9:57
     */
    String giveSendTemplateMessageUrl();

    /**
     * 功能描述：微信访问地址——换取Ticket地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:07
     */
    String giveWebTicketUrl();

    /**
     * 功能描述：微信访问地址——换取Token地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:07
     */
    String givePaymentLink();

    /**
     * 功能描述：微信访问地址——获取用户信息地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:49
     */
    String giveUserInfoUrl();

    /**
     * 功能描述：微信访问地址——换取Access_Token地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveAccessTokenUrl();

    /**
     * 功能描述：微信访问地址——刷新Token地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveRefreshAccessTokenUrl();

    /**
     * 功能描述：微信访问地址——换取JsapiTicket地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveJsapiTicketUrl();

    /**
     * 功能描述：微信访问地址——下单地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveUnifiedOrderUrl();

    /**
     * 功能描述：微信访问地址——退款地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveRefundPayOrderUrl();

    /**
     * 功能描述：微信访问地址——提现地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveWithdrawUrl();

    /**
     * 功能描述：微信访问地址——查询订单地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveSearchOrderUrl();

    /**
     * 功能描述：微信访问地址——关闭订单地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 10:48
     */
    String giveCloseOrderUrl();

    /**
     * 功能描述：微信访问地址——下单回调接口
     *
     * @param appId 平台标识
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String givePayCallBackUrl(String appId);

    /**
     * 功能描述：微信访问地址——下单回调接口
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String givePayCallBackUrlEncodeUrl() throws UnsupportedEncodingException;

    /**
     * 功能描述：微信访问地址——获取二维码地址
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveGenerateQrCodeUrl();

    /**
     * 功能描述：微信访问地址——获取素材总数
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveMaterialCountUrl();

    /**
     * 功能描述：微信访问地址——获取素材列表
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveMaterialDataUrl();

    /**
     * 功能描述：微信访问地址——获取素材总数
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveWxMenuUrl();

    /**
     * 功能描述：微信访问地址——获取素材列表
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveUpdateWxMenuUrl();

    /**
     * 功能描述：微信访问地址——是否关注
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveIsAttentionUrl();

    /**
     * 功能描述：微信访问地址——批量为用户打标签
     *
     * @author : 王雷
     * @date : 2021/1/22 0022 下午 8:24
     */
    String giveBatchUserByTagUrl();
}
